<?php

/**
 * 유틸리티
 *
 * epart common util
 * version: 0.3
 */
//워드프레스 에러리포팅이 과해서 오버라이딩함..
error_reporting(E_ALL & ~E_NOTICE);

/**
 * 디버그 펑션
 *
 * @author cwsong
 * @since 0.1
 * @param object $var 디버그할 변수
 */
function debug($var) {
    echo "<pre>";
    print_r($var);
    echo "</pre><hr /><br />";
}

/**
 * 변수디버깅 후 파일에 로깅한다.
 *
 * @author cwsong
 * @since 0.2
 * @param object $var 디버그할 변수
 */
function debug_log($var) {
    $toFile = print_r($var, true);
    $log = fopen(WP_PLUGIN_DIR . "/epart-common/debug/epart_" . date("Y.m.d") . ".log", "a"); //a:append
    fwrite($log, "\nTIME : " . date("Y.m.d H:i:s") . "\n");
    fwrite($log, $toFile);
    fwrite($log, "\n-----------------------------------------------------------");
    fclose($log);
}

/**
 * 문자열을 길이에 맞게 자른다
 *
 * @author kbs
 * @since 0.2
 * @param String $str 대상문자열
 * @param int $len 길이
 * @param int $poststr 결과문자열 뒤에 붙일 문자열
 * @return String 결과문자열
 */
function ep_text_cut($str, $len, $poststr="...") {
    if (mb_strlen($str) <= $len) {
        return $str;
    } else {
        return mb_substr($str, 0, $len) . $poststr;
    }
}

/**
 * 배열에서 select의 option을 생성한다
 *
 * @author kbs
 * @since 0.2
 * @param Array $opts_arr 대상 배열
 * @param String $seleted_key selected를 키값
 * @return String option태그
 */
function ep_get_options($opts_arr, $selected_key="") {
    $result_options = '';
    foreach ($opts_arr as $key => $val) {

        if ($selected_key != "") {
            if ($key == $selected_key) {
                $selected = " selected=\"selected\"";
            } else {
                $selected = "";
            }
        }

        $result_options .= '<option value="' . $key . '"' . $selected . '>' . $val . '</option>';
    }
    return $result_options;
}

/**
 * 파라메터 인코딩, 슬래시 제거한다.
 *
 * @param string $str
 * @return string 정제된 문자열
 */
function ep_sanitize_parameter($str) {
    return rawurlencode(stripslashes($str));
}

/**
 * 오브젝트 또는 오브젝트배열을 배열(또는 다차원배열)로 변환하여 반환한다.
 *
 * @author aaron@tekserve.com - php.net 에서 긁어온거 수정
 * @since 0.3
 * @param mixed $mixed 배열 또는 오브젝트
 * @return array 결과배열
 */
function ep_object_to_array($mixed) {
    if (is_object($mixed)) {
        $mixed = (array) $mixed;
    }
    if (is_array($mixed)) {
        $new = array();
        foreach ($mixed as $key => $val) {
            $key = preg_replace("/^\\0(.*)\\0/", "", $key);
            //재귀호출
            $new[$key] = ep_object_to_array($val);
        }
    } else {
        $new = $mixed;
    }
    return $new;
}

/**
 * 라디오버튼, 체크박스, 셀렉트박스 체크상태, 셀렉트상태 문자열을 반환한다.<br />
 * value 에 '0'이 있는 경우 사용한다.<br />
 * $initiallyChecked로 최초에 선택되어 있을 것인지 세팅한다.
 *
 * @author cwsong
 * @since 0.3
 * @param int $val 체크상태
 * @param int $target 비교할 값
 * @param string $kind 체크상태|셀렉트상태 'radio'|'checkbox'|'select'
 * @param boolean $initiallyChecked 최초체크여부
 * @return string 라디오 체크상태
 */
function ep_get_initial_check($val, $target, $kind = "", $initiallyChecked = false) {
    if (empty($kind)) {
        wp_die("element종류를 지정해주세요. radio|checkbox|select");
    }
    //'0'넘어옴..null로 체크할것..
    if (is_null($val)) {
        if ($initiallyChecked) {
            if ($kind == 'radio' || $kind == 'checkbox') {
                return 'checked="checked"';
            } else if ($kind == 'select') {
                return 'selected="selected"';
            }
        }
    } else {
        if ($val == $target) {
            if ($kind == 'radio' || $kind == 'checkbox') {
                return 'checked="checked"';
            } else if ($kind == 'select') {
                return 'selected="selected"';
            }
        }
        return "";
    }
}

/**
 * 사용자 롤 옵션의 최초 선택상태를 출력한다.<br />
 * 선택값이 있으면 해당하는 값이 선택되어 출력된다.
 *
 * @param <type> $val
 * @param <type> $initialRole
 */
function ep_get_initial_dropdown_role($val, $initialRole) {
    if (empty($val)) {
        echo '<option value="guest">비회원</option>';
        wp_dropdown_roles($initialRole);
    } else {
        if ($val == 'guest') {
            echo '<option value="guest" selected="selected">비회원</option>';
            wp_dropdown_roles();
        } else {
            echo '<option value="guest">비회원</option>';
            wp_dropdown_roles($val);
        }
    }
}

/**
 * 사용자 전체 이름을 반환한다.
 *
 * @author cwsong
 * @since 0.3.3
 * @return string 사용자 전체 이름
 */
function ebbs_get_user_whole_name(){
    $current_user = wp_get_current_user();
    return $current_user->user_lastname .$current_user->user_firstname;
}

//dummy data 생성
function ebbs_dummy_data() {
    global $wpdb;

    for ($i = 0; $i < 500; $i++) {
        $wpdb->insert('wp_ebbs_board', array(
            'bc_no' => 5
            , 'ca_no' => 0
            , 'blog_id' => get_current_blog_id()
            , 'bd_title' => ebbs_sanitize_string('test' . rand(1, 999))
            , 'bd_writer_name' => ebbs_sanitize_string('tester')
            , 'bd_writer_id' => 'tester001'
            , 'bd_writer_email' => ebbs_sanitize_string('tester001@epart.com')
            , 'bd_writer_phone' => ebbs_sanitize_string('011-9309-1543')
            , 'bd_writer_mobile' => ebbs_sanitize_string('011-9309-1543')
            , 'bd_writer_zip' => ebbs_sanitize_string('111-222')
            , 'bd_writer_address1' => ebbs_sanitize_string('서울시...')
            , 'bd_writer_address2' => ebbs_sanitize_string('서대문구...')
            , 'bd_content' => ebbs_sanitize_string('테스트입니다.')
            , 'bd_notice' => 0
            , 'bd_secret' => 0
            , 'bd_reg_date' => current_time('mysql')
            , 'bd_update_date' => current_time('mysql')
            , 'bd_password' => $bd_password ? md5($bd_password) : ''
            , 'bd_writer_ip' => $_SERVER['REMOTE_ADDR']
        ));
        $inserted_id = $wpdb->insert_id;
        $wpdb->update('wp_ebbs_board', array('bd_root' => $inserted_id), array('bd_no' => $inserted_id));
    }
}
?>
